package entitys

import (
	"rpcSrv/dbs/mysqlGORM"
	"rpcSrv/utils"
)

//积分
type Integral struct {
	ID               int     `json:"id"`
	Uid              int     `json:"uid"`
	ChangeAmount     float64 `json:"change_amount"` //正数表示充值  负数表示消费
	TotalAmount      float64 `json:"total_amount"`
	Mark             string  `json:"mark"`
	Status           int     `json:"status"` //0表示待付款  1表示已经付款
	OutTradeNo       string  `json:"out_trade_no"`
	TradeNo          string  `json:"trade_no"`
	CreatedTimestamp int64   `json:"created_timestamp"`
}

func (this *Integral) TableName() string {
	return "integral"
}

const integral_schema = `
create table if not exists integral
(
    id            int(10)         not null auto_increment unique,
    uid           int(10)         not null comment '用户ID',
    change_amount decimal(8, 2) not null comment '积分改变量 正数表示充值  负数表示消费',
    total_amount  decimal(16, 2) not null comment '总积分数',
    mark          varchar(200) default null comment '消费说明',
	status        tinyint(1)   default 0    comment '0表示待付款  1表示已经付款',
	out_trade_no  varchar(100) not null     comment '我方交易单号',
	trade_no      varchar(100) default null comment '支付宝方交易单号',
    created_timestamp    bigint(13)    default 0,
    primary key (id),
	index integram_out_trade_no(out_trade_no) using btree,
    index integral_uid (uid) using btree
) engine = INNODB
  default charset = utf8 comment '积分流水表';
`

func init() {
	db, err := mysqlGORM.GetMysqlDB()
	if utils.CheckErr(err) {
		return
	}
	tx := db.Begin()
	defer tx.Commit()
	if !db.HasTable(new(Integral).TableName()) {
		if err = tx.Exec(integral_schema).Error; utils.CheckErr(err) {
			tx.Rollback()
			return
		}
	}
}
